#include "file_transfer.h"


int main(int argc, char *argv[])
{
	char buf[BUFSIZ] = {};
	struct config conf;
	struct file_transfer *ft = (struct file_transfer *)buf;
	char input[100] = {};

	/*根据config初始化环境*/
	FT_InitConfig(&conf);

	/*准备套接字*/
	int fd = SocketInit(conf.ip, conf.port, false);

	printf("********************************************\n");
	printf("**************请输入 help 查看选项**********\n");
	printf("********************************************\n");
	/*执行相应功能*/
	while(1)
	{
		printf("input your choice: >>> ");
		fgets(input, sizeof(input), stdin);
		//删除末尾的\n
		input[strcspn(input, "\n")] = '\0';
		if(strncmp(input, "help", strlen("help")) == 0){
			printf("****************************************************************\n");
			printf("**************输入/功能*****************************************\n");
			printf("*************list :查看服务器所在目录的所有文件*****************\n");
			printf("*************get filename: 下载服务器目录的文件*****************\n");
			printf("*************put filename: 上传文件到服务器*********************\n");
			printf("*************quit :关闭客户端***********************************\n");
			printf("****************************************************************\n");
		}else if(strncmp(input, "list", strlen("list")) == 0){
			//获取文件列表
			FT_FileList(fd, ft);		
		}else if(strncmp(input, "get", strlen("get")) == 0){	
			//获取文件
			FT_GetFile(fd, strchr(input, ' ') + 1, ft);
		}else if(strncmp(input, "put", strlen("put")) == 0){
			//上传文件
			FT_PutFile(fd, strchr(input, ' ') + 1, ft);
		}else if(strncmp(input, "quit", strlen("quit")) == 0){
			//退出程序
			close(fd);
			return 0;
		}else{			
			fprintf(stderr, "Invalid option!\n");
		}
	}
}
